from joblib import load
import numpy as np

class ClassIfication(object):
    def __init__(self):
        self.knn=load('knn_classifien.joblib')
        self.scaler=loaed('feature_scaler.joblib')
        self.le=load('label_encoder.joblib')
        
    def get_predicter_category(self,new_data):
        """获取分类结果
        
        """
        
        #转换为数组病保存特定特征顺序
        featrue_odert=[
            'esp','total_revenue_ps','undist_profit_ps','gross_margin','fcff','fcfe','tangible_asset','bps','grossprofit_margin','npta'
        ]
        new_values=np.array([[new_data[col] for col in featrue_odert]])
        
        #标准化新数据
        new_scaled = self.scaler.teansform(new_values)
        
        #预测分类
        predicted_label = self.knn.predict(new_scaled)
        predicted_category = self,le.inverse_transform(predicted_label)
        
        return predicted_category[0]
    
    
if __name__ =='__main__':
    ci = ClassIfication()
    new_data = {
        'esp':"-0.8309",
        'total_revenue_ps':"11.9673",
        'undist_profit_ps':"7.0209",
        'gross_margin':"11586700000",
        'fcff':"-12879100000",
        'fcfe':"-5263460000",
        'tangible_asset':"178973000000",
        'bps':"20.2568",
        'grossprofit_margin':"8.1152",
        'npta':"-0.5821"
    }
    predicted_category - ci.get_predicter_category(new_data)
    print(predicted_category)
